package cn.iocoder.yudao.module.system.enums.application;

import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Objects;

/**
 * 目录审批相关枚举
 * 集中管理所有相关枚举类型，code使用字符串类型
 */
public class ApplicationEnums {

    /**
     * 表单类型枚举
     * 1-ETL，2-数据集，3-接口（存储为字符串）
     */
    @Getter
    @AllArgsConstructor
    public enum Type {
        ETL("1", "ETL"),
        DATA_SET("2", "数据集"),
        INTERFACE("3", "接口");

        private final String code;
        private final String name;

        /**
         * 根据编码获取枚举实例（重命名方法以避免冲突）
         */
        public static Type fromCode(String code) {
            if (code == null) {
                return null;
            }
            for (Type type : values()) {
                if (Objects.equals(type.getCode(), code)) {
                    return type;
                }
            }
            return null;
        }
    }

    /**
     * 状态枚举
     * 0-未提交、1-已提交、2-审核中、3-审核不通过、4-审核通过（存储为字符串）
     */
    @Getter
    @AllArgsConstructor
    public enum Status {
        UN_SUBMITTED("0", "待提交"),
        SUBMITTED("1", "已提交"),
        IN_REVIEW("2", "审核中"),
        REVIEW_FAILED("3", "审核不通过"),
        REVIEW_PASSED("4", "审核通过");

        private final String code;
        private final String description;

        /**
         * 根据编码获取枚举实例（重命名方法以避免冲突）
         */
        public static Status fromCode(String code) {
            if (code == null) {
                return null;
            }
            for (Status status : values()) {
                if (Objects.equals(status.getCode(), code)) {
                    return status;
                }
            }
            return null;
        }
    }
}
